package com.yupi.springbootinit.utils;

import java.io.IOException;
import java.util.Arrays;
import java.util.List;

public class DataAnalysisExample {
    
    // 使用从application.yml中获取的实际API Key
    private static final String API_KEY = "sk-ohxkwbxqxfgiwiegwaowwkkrudfvzezjcjkhkmnblkatttqd";
    
    public static void main(String[] args) {
        // 预设数据分析专家角色
        dataAnalysisExpertExample();
    }
    
    /**
     * 数据分析专家角色示例
     * 预设专门用于数据分析和前端可视化生成的角色
     */
    public static void dataAnalysisExpertExample() {
        System.out.println("=== 数据分析专家角色示例 ===");
        
        try {
            // 定义消息列表，预设专门的角色
            List<ChatAiUtils.Message> messages = Arrays.asList(
                // 预设系统角色：数据分析师和前端开发专家，包含详细的示例问答
                ChatAiUtils.Message.system("你是一个数据分析师和前端开发专家。请严格按照以下要求处理用户提供的数据：\n\n" +
                    "1. 输入格式：\n" +
                    "分析需求：\n" +
                    "{数据分析的需求或者目标}\n" +
                    "原始数据：\n" +
                    "{csv格式的原始数据，用,作为分隔符}\n\n" +
                    "2. 输出格式要求（严格按照以下格式输出，不要有任何额外内容）：\n" +
                    "【【【【【\n" +
                    "{前端 Echarts V5 的 option 配置对象js代码，合理地将数据进行可视化，不要生成任何多余内容}\n" +
                    "【【【【【\n" +
                    "{明确的数据分析结论、越详细越好，不要生成多余的注释}\n\n" +
                    "3. 示例问答：\n\n" +
                    "输入示例：\n" +
                    "分析需求：\n" +
                    "分析网站用户访问趋势，找出访问量最高的日期并分析增长趋势\n" +
                    "原始数据：\n" +
                    "日期,访问量\n" +
                    "2023-10-01,1200\n" +
                    "2023-10-02,1500\n" +
                    "2023-10-03,1800\n" +
                    "2023-10-04,1600\n" +
                    "2023-10-05,2100\n" +
                    "2023-10-06,2400\n" +
                    "2023-10-07,2200\n\n" +
                    "输出示例：\n" +
                    "【【【【【\n" +
                    "option = {\n" +
                    "    title: {\n" +
                    "        text: '网站用户访问趋势'\n" +
                    "    },\n" +
                    "    tooltip: {},\n" +
                    "    legend: {\n" +
                    "        data:['访问量']\n" +
                    "    },\n" +
                    "    xAxis: {\n" +
                    "        type: 'category',\n" +
                    "        data: ['2023-10-01', '2023-10-02', '2023-10-03', '2023-10-04', '2023-10-05', '2023-10-06', '2023-10-07']\n" +
                    "    },\n" +
                    "    yAxis: {},\n" +
                    "    series: [{\n" +
                    "        name: '访问量',\n" +
                    "        type: 'line',\n" +
                    "        data: [1200, 1500, 1800, 1600, 2100, 2400, 2200]\n" +
                    "    }]\n" +
                    "};\n" +
                    "【【【【【\n" +
                    "根据提供的网站访问数据，分析结果如下：\n" +
                    "1. 数据概览：数据涵盖了7天的访问量，访问量在1200到2400之间波动。\n" +
                    "2. 趋势分析：整体呈现上升趋势，从第一天的1200增长到第六天的2400，增长率达到100%。\n" +
                    "3. 最高访问量：第六天（2023-10-06）达到最高访问量2400。\n" +
                    "4. 增长模式：前三天持续增长，第四天略有下降，之后继续增长并在第六天达到峰值，第七天稍有回落。\n" +
                    "5. 建议：可以进一步分析第六天访问量激增的原因，以便在未来复制成功经验。"),
                
                // 用户提供具体的数据分析请求
                ChatAiUtils.Message.user("分析需求：\n" +
                    "分析网站用户访问趋势，找出访问量最高的日期并分析增长趋势\n" +
                    "原始数据：\n" +
                    "日期,访问量\n" +
                    "2023-10-01,1200\n" +
                    "2023-10-02,1500\n" +
                    "2023-10-03,1800\n" +
                    "2023-10-04,1600\n" +
                    "2023-10-05,2100\n" +
                    "2023-10-06,2400\n" +
                    "2023-10-07,2200")
            );
            
            System.out.println("正在调用AI接口...");
            
            // 调用 AI 接口
            String response = ChatAiUtils.chatOpenAI(
                API_KEY,
                "Qwen/Qwen3-8B",  // 使用配置文件中指定的模型
                messages,
                1500,  // 增加最大 token 数，因为需要生成更多内容
                0.3    // 降低温度参数，使输出更稳定准确
            );
            
            System.out.println("用户请求：");
            System.out.println("分析需求：分析网站用户访问趋势，找出访问量最高的日期并分析增长趋势");
            System.out.println("原始数据：日期,访问量\n" +
                             "2023-10-01,1200\n" +
                             "2023-10-02,1500\n" +
                             "2023-10-03,1800\n" +
                             "2023-10-04,1600\n" +
                             "2023-10-05,2100\n" +
                             "2023-10-06,2400\n" +
                             "2023-10-07,2200");
            System.out.println("\nAI助手回复：");
            System.out.println(response);
            System.out.println();
            
        } catch (IOException e) {
            System.err.println("调用 AI 接口失败: " + e.getMessage());
            e.printStackTrace();
        }
    }
}